package com.yehui.bean;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Service;

/**
 * 1.工厂Bean在Spring容器中一开始保存的是工厂本身
 * 2.第一次获取Hello组件(HelloFactory能产生的对象)
 * 3.Spring.getBean会底层所有组件挨个遍历那个组件的类型是Hello
 * 4.找到HelloFactory发现他是工厂，类型被决定成Hello
 * 5.调用工厂方法(getObject)创建Hello对象
 * 6.在容器中保存的名字
 * 7.普通的单实例bean保存在singletonObjects单列池子中
 * 8工厂产生的bean，缓存在factoryBeanCache，下一次直接从这里拿，所有的bean默认还是单实例
 */
//也可以实现它SmartFactoryBean
@Service
public class HelloFactory implements FactoryBean<Hello> {
    @Override
    public Hello getObject() throws Exception {
        return new Hello();
    }

    @Override
    public Class<?> getObjectType() {
        return Hello.class;
    }
}
